grammar prtf;

compilationUnit:
    compilationUnit_item* EOF //EOF结束符号匹配
    ;

//     A          R DTREC1                    TEXT('柧嵶')
compilationUnit_item :
    file_levels painting_definition+
    ;

//文件夹定义函数
file_levels:
    file_level*
    ;

file_level:
    AND_OR_ANNOTATION? file_func
 ;

file_func:
TEXT
;

painting_definition :
TEXT
;

TEXT : T E X T ;


//词法解析 由这些组成
HELLO : [a-zA-Z]+;

// 表示 由纯数字组成 最少有1个，可以有多个 至少出现一次
NUM : [0-9]+ ;

//表示 由数字和字母组成 最少有1个，可以有多个 至少出现一次
ID : [a-zA-Z0-9]+ ;

//如果是以这些符号开头的，这一行不匹配 放入 HIDDEN 隐藏通道
// 匹配双斜线后的任意字符，可以有可以没有
// .*? 非判断模式 可有可无
// '\r'? 可有可无  (适配linux)(liunx下的换行符为\n，win是\r\n)
LINE_COMMIT : '//' .*? '\r'? '\n' -> channel(HIDDEN);

//无效字符 跳过不匹配 放入隐藏通道
WS : [ \t\r\n]+ -> skip;

fragment T : [Hh];
fragment E : [Ee];
fragment X : [Xx];